package com.lz.b;

import java.util.Scanner;

/**
 * @ClassName Demo14
 * @Description 求指定两个数的最大公约数和最小公倍数
 * @Author 2214361854
 * @Date 2022/5/27 9:11
 * @Version 1.0
 */
public class Demo14 {
    public static void main(String[] args) {
        System.out.println("输入两个正整数：");
        int m = new Scanner(System.in).nextInt();
        int n = new Scanner(System.in).nextInt();
        System.out.println("最大公约数：" + zdgys(m, n));
        System.out.println("最小公倍数：" + zxgbs(m, n));
    }

    /**
     * 最大公约数
     *
     * @param m
     * @param n
     * @return
     */
    private static int zdgys(int m, int n) {
        /*公式：辗转相除法
        m,n为正整数，m>0
        gcd (m,n) = gcd (n,m mod n)
        */
        return n != 0 ? zdgys(n, m % n) : m;
    }

    /**
     * 最小公倍数
     *
     * @param a
     * @param b
     * @return
     */
    private static long zxgbs(int a, int b) {
        //公式：两数乘积除以/最大公约数
        return (a * b) / zdgys(a, b);
    }
}
